Multiprocessing systems employ many parallel-operating central processing units (CPUs) which independently perform tasks under the direction of a single operating system. One type of multiprocessing system is based upon a plurality of CPUs employing high-bandwidth point-to-point links (rather than a conventional shared-bus architecture) to provide direct connectivity between the CPUs and to router devices, input/output (I/O) devices, memory units and/or other CPUs.
Another type of multiprocessing system is based upon a plurality of computing nodes, each node employing high-bandwidth point-to-point links to communicate with other nodes. Each node may contain a plurality of components such as CPUs, memory units, I/O devices, etc. Individual nodes may have a different number of components. Both of these types of multiprocessing systems share the common problem of building a communication fabric to interconnect the endpoints. These endpoints will be referred to here as “processors,” but could be any type of computing block including CPUs, memory devices, I/O devices, cells, nodes, etc.
Multiprocessing system designs often allow processors to be grouped into “clusters” of processors. The clusters are communicatively coupled together via router devices, such as crossbars, to facilitate communications among the various processors of the clusters. A plurality of processor clusters and crossbars may be assembled onto modular boards or in a chassis to create a large multiprocessing system having many processors.
As the size of conventional multiprocessing systems increase, the number of ports, and hence the size of the crossbars, also increases. Larger crossbars may be more difficult and expensive to fabricate because of the associated large area of silicon required for fabrication, because of the inherent failure rates associated with large integrated circuits on a single die, and because of the larger number of ports.
When vendor-provided crossbars are used in the fabrication of multiprocessing systems, the multiprocessing system designers must use crossbars having a predefined number of ports available on a vendor-provided crossbar. Thus, design limitations may be encountered if a desired number of ports are not available on a vendor-provided crossbar to couple the desired number of CPUs (and/or other devices) together.
Conventional solutions to these problems use multiple levels of crossbars to interconnect the processors. This requires signals to propagate through two or more crossbars, increasing the latencies through the system and decreasing system performance.